//
//  UITableViewDataSource.swift
//  Documentation
//
//  Created by Toj on 11/18/22.
//

public protocol UITableViewDataSource: NSObjectProtocol {
    
    // 每个组的单元格数量. 必须实现
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    
    // 单元格内容. 必须实现
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    
    // 多少组
    optional func numberOfSections(in tableView: UITableView) -> Int
    
    // 设置组表的头标签视图的字符串
    optional func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
    
    // 设置组表的尾标签视图的字符串
    optional func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String?
    
    
    // 设置单元格是否可以编辑
    optional func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool
    
    // 设置单元格是否可以移动
    optional func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool
    
    
    optional func sectionIndexTitles(for tableView: UITableView) -> [String]?
    
    // 设置指定组的表的头标签文本
    optional func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int
    
    // 编辑单元格 (添加/ 删除)
    optional func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath)
    
    // 单元格移动
    optional func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath)
}
